package com.wy.timer;

import java.util.concurrent.TimeUnit;

/**
 * 周期性任务的实现
 * delay=5000（多久后开始执行-5s）,period=1000（周期-1s）
 **/
public class ImplTimer2 {
    public static void main(String[] args) {
        Runnable task=new Runnable() {
            @Override
            public void run() {
                try {
                    while(true) {
                        //周期性执行这个任务：打印“执行任务”
                        System.out.println("执行任务");
                        Thread.sleep(1000);//休眠周期1s
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        };

        MyThread t=new MyThread(task,5000);
        t.start();
        while (true){}
    }
    //创建子线程，先让sleep5秒，5s后开始执行任务
    static class MyThread extends Thread{
        //线程执行我们分配给它的任务
        Runnable task;
        long delay;//传入时间
        MyThread(Runnable task,long delay){
            this.task=task;
            this.delay=delay;
        }

        @Override
        public void run() {
            try {
                Thread.sleep(delay);//毫秒为单位的休眠
                task.run();//休眠之后执行任务:打印时间到了
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
